package com.chunxuan.langquan.dao.http;

import com.chunxuan.langquan.base.BaseResult2;
import com.chunxuan.langquan.dao.bean.Banner;
import com.chunxuan.langquan.dao.bean.CategoryEntity;
import com.chunxuan.langquan.dao.bean.CourseDetail;
import com.chunxuan.langquan.dao.bean.CourseSearch;
import com.chunxuan.langquan.dao.bean.ImageUrl;
import com.chunxuan.langquan.dao.bean.PageBean;
import com.chunxuan.langquan.dao.bean.SubjectMore;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

public interface ApiService2 {
//    //融云获取token接口
//    @FormUrlEncoded
//    @POST("getToken.json")
//    Observable<RongToken> reqRongToken(
//            @Header("App-Key") String appKey,
//            @Header("Nonce") String Nonce,
//            @Header("Timestamp") String Timestamp,
//            @Header("Signature") String Signature,
//            @Field("userId") String userId,
//            @Field("name") String name,
//            @Field("portraitUri") String portraitUri);
//
//    // chat/getUserInfo 获取用户信息
//    @GET("chat/getUserInfo")
//    Observable<BaseResult2<RongUser>> reqUserInfo(@Query("accountId") String accountId);
//
//    @Streaming
//    @GET
//    Observable<ResponseBody> downloadApk(@Url String url);

//    // retrofit
//    @Streaming
//    @GET
//    Call<ResponseBody> download(@Url String url);
//
//    @POST("couponHistory/app/unLock")
//    Observable<BaseResult2> unLock(@Body RequestBody body);


    //-------------------------------------------------------------------------------------

    // 获取课程详情 @Field("grade_category_id") String grade_id, @Field("subject_category_id") String subject_id, @Field("class_category_id") String class_id,
    @FormUrlEncoded
    @POST("api/course/info")
    Observable<BaseResult2<CourseDetail>> reqCourseDetail(@Header("token") String token, @Field("course_id") String course_id);

    // 获取教师详情
    @FormUrlEncoded
    @POST("api/teacher/info")
    Observable<BaseResult2<CourseDetail.TeacherInfo>> reqTeacherInfo(@Header("token") String token, @Field("teacher_id") String teacher_id);

    // 获取评价列表
    @FormUrlEncoded
    @POST("api/course/commentList")
    Observable<BaseResult2<PageBean<CourseDetail.CommentInfo>>> reqCommentList(@Header("token") String token, @Field("course_id") String course_id
            , @Field("page") String page, @Field("page_size") String page_size);

    // 科目页-更多
    @FormUrlEncoded
    @POST("api/course/classMore")
    Observable<BaseResult2<PageBean<SubjectMore>>> reqSubjectMore(@Header("token") String token
            , @Field("subject_category_id") String subject_category_id, @Field("class_category_id") String class_category_id
            , @Field("page") String page, @Field("page_size") String page_size);

    // 首页banner
    @FormUrlEncoded
    @POST("api/index/getBannerList")
    Observable<BaseResult2<List<Banner>>> reqBannerList(@Header("token") String token, @Field("type") int type);

    // 保存课程观看记录
    @FormUrlEncoded
    @POST("api/course/saveRecord")
    Observable<BaseResult2> reqSaveRecord(@Header("token") String token, @Field("course_id") String course_id);

    // 发表评价 api/course/comment
    @FormUrlEncoded
    @POST("api/course/comment")
    Observable<BaseResult2> reqPublishComment(@Header("token") String token, @Field("course_id") String course_id
            , @Field("content") String content, @Field("tags") String tags);

    // 获取评价标签 api/course/getTags
    @FormUrlEncoded
    @POST("api/course/getTags")
    Observable<BaseResult2<List<String>>> reqLabelList(@Header("token") String token, @Field("param") String banner);

    // 搜索课程名称 api/course/search
    @FormUrlEncoded
    @POST("api/course/search")
    Observable<BaseResult2<List<CourseSearch>>> reqSearchCourseList(@Header("token") String token, @Field("search") String search);

    //    // 验证码登录  http://yunjianyan.ilicloud.cn/api/codeLogin
//    @FormUrlEncoded
//    @POST("api/codeLogin")
//    Observable<BaseResult2> loginByCode(@Field("phone") String phone, @Field("code") String code, @Field("type") String type);
//
//    // 获取当前用户信息 type 用户角色(1医生,2专家,3物流,4患者)
//    @FormUrlEncoded
//    @POST("api/me")
//    Observable<BaseResult2<List<Doctor>>> getUserInfo(@Header("Authorization") String Authorization, @Field("type") String type);
//
    @POST("api/upload")
    Observable<BaseResult2<List<ImageUrl>>> reqUploadImg(@Body MultipartBody multipartBody);

    @Multipart
    @POST("api/upload")
    Observable<BaseResult2<List<ImageUrl>>> reqUploadImg(@Part MultipartBody.Part picture);

    // 获取全部分类
    @FormUrlEncoded
    @POST("addons/unishop/category/all")
    Observable<BaseResult2<List<CategoryEntity>>> requestCategoryData(@Header("token") String token, @Field("no") String no);
}